Page({
  data: {
    userInfo: {} as WechatMiniprogram.UserInfo,
    hasUserInfo: false,
    canIUseGetUserProfile: false, // 用于检测是否可以使用 getUserProfile
    loading: false // 加载状态
  },

  onLoad() {
    // 检查是否支持 getUserProfile
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      });
    }

    // 读取本地存储的用户信息
    const storedUserInfo = wx.getStorageSync("userInfo");
    if (storedUserInfo && storedUserInfo.nickName) {
      this.setData({
        userInfo: storedUserInfo,
        hasUserInfo: true
      });
      
      // 显示欢迎回来的提示
      wx.showToast({
        title: `欢迎回来，${storedUserInfo.nickName}`,
        icon: 'none',
        duration: 2000
      });
    }
  },

  // 获取用户信息 - 使用 getUserProfile
  getUserProfile() {
    // 设置加载状态
    this.setData({ loading: true });
    
    wx.getUserProfile({
      desc: "用于在聊天中显示您的头像和昵称",
      lang: 'zh_CN', // 确保使用中文
      success: (res) => {
        console.log("用户信息获取成功：", res.userInfo);
        
        // 确保获取到的信息完整
        if (res.userInfo && res.userInfo.nickName && res.userInfo.avatarUrl) {
          // 更新数据
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          });
          
          // 保存到本地存储
          wx.setStorageSync("userInfo", res.userInfo);
          
          // 显示成功提示
          wx.showToast({
            title: "登录成功",
            icon: "success"
          });
          
          // 可选：返回到聊天页面
          setTimeout(() => {
            wx.navigateBack({
              delta: 1
            });
          }, 1500);
        } else {
          wx.showToast({
            title: "获取信息不完整，请重试",
            icon: "none"
          });
        }
      },
      fail: (err) => {
        console.error("获取用户信息失败", err);
        wx.showToast({
          title: "获取用户信息失败，请重试",
          icon: "none"
        });
      },
      complete: () => {
        // 无论成功失败，都取消加载状态
        this.setData({ loading: false });
      }
    });
  },

  // 兼容旧版本的获取用户信息方法
  getUserInfo(e: any) {
    if (e.detail.userInfo) {
      this.setData({
        userInfo: e.detail.userInfo,
        hasUserInfo: true
      });
      wx.setStorageSync("userInfo", e.detail.userInfo);
    } else {
      wx.showToast({
        title: "获取用户信息失败",
        icon: "none"
      });
    }
  },

  // 退出登录
  logout() {
    wx.showModal({
      title: "确认退出",
      content: "您确定要退出登录吗？",
      confirmColor: "#ff5252",
      success: (res) => {
        if (res.confirm) {
          // 移除本地存储
          wx.removeStorageSync("userInfo");
          
          // 更新状态
          this.setData({
            userInfo: {} as WechatMiniprogram.UserInfo,
            hasUserInfo: false
          });
          
          // 显示提示
          wx.showToast({
            title: "已退出登录",
            icon: "success"
          });
          
          // 轻微振动反馈
          wx.vibrateShort({
            type: 'light'
          });
        }
      }
    });
  },
  
  // 跳转到聊天页面
  goToChat() {
    wx.navigateTo({
      url: '/pages/index/index'
    });
  }
});
